"""
需求：
1. 房子(House) 有 户型、 总面积、剩余面积 和 家具名称列表
    - 新房子没有任何的家具、剩余面积和总面积相等
2. 家具(HouseItem) 有 家具名字 和 家具面积， 其中
    - 席梦思(bed) 占地 4 平米
    - 衣柜(chest) 占地 2 平米
    - 餐桌(table) 占地 1.5 平米
3. 将以上三件 家具 添加 到 房子 中
    - 向房间 添加家具 时， 让 剩余面积 -= 家具面积
4. 打印房子时， 要求输出： 户型、 总面积、 剩余面积、 家具名称列表

家具类
类名：HouseItem
属性：家具名称name、家具面积area
方法：
    __init__(): 添加属性
    __str__(): 以字符串格式返回属性信息


房子类
类名：House
属性：户型house_type、 总面积area、剩余面积free_area 和 家具名称列表item_name_list
方法：
    __init__(): 添加属性
    __str__(): 以字符串格式返回属性信息
    add_item(): 添加家具，需要一个形参temp接收家具对象
"""


class HouseItem(object):
    def __init__(self, name, area):
        # 家具名称name、家具面积area
        self.name = name
        self.area = area

    def __str__(self):
        return f'【{self.name}】占地面积为 {self.area} 平方'


class House(object):
    def __init__(self, house_type, area):
        # self = h, house_type = '深圳湾二号', area = 100
        # 户型house_type、 总面积area、剩余面积free_area 和 家具名称列表item_name_list
        self.house_type = house_type
        self.area = area    # 默认没有家具，总面积和剩余面积相等
        self.free_area = area
        self.item_name_list = []    # 空列表，默认没有家具的

    def __str__(self):
        return f'户型为：【{self.house_type}】, ' \
               f'总面积 {self.area} 平方，' \
               f'剩余面积 {self.free_area} 平方，' \
               f'家具名称列表 {self.item_name_list}'

    def add_item(self, temp):
        # self = h, temp = bed
        # 1. 房子的面积 > 家具的面积
        if self.free_area > temp.area:
            # 1.1 打印，添加哪个家具，家具占地面积为多少
            print(f'添加{temp.name}, 它的占地面积为{temp.area}')
            # 1.2 房子的列表添加家具的名字
            self.item_name_list.append(temp.name)
            # 1.3 房子的剩余面积 -= 家具占地面积
            self.free_area -= temp.area
        # 2. 否则， 房子的面积 <= 家具的面积
        else:
            # 2.1 添加家具失败
            print('添加家具失败')


# 实例化对象
h = House('深圳湾二号', 100)
print(h)
# 创建一个家具对象
bed = HouseItem('席梦思', 4)
print(bed)
# 房子对象添加家具对象
h.add_item(bed)
print(h)

chest = HouseItem('衣柜', 2)
h.add_item(chest)
print(h)
"""
# 实例化对象，自动调用__init__
# 席梦思(bed) 占地 4 平米
bed = HouseItem('席梦思', 4)
print(bed)
# 衣柜(chest) 占地 2 平米
chest = HouseItem('衣柜', 2)
print(chest)
# 餐桌(table) 占地 1.5 平米
table = HouseItem('餐桌', 1.5)
print(table)
"""

